package array

/*
给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
你可以假设每种输入只会对应一个答案，并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
*/
func twoSum(nums []int, target int) []int {
	ans := make([]int, 2)
	for i := 0; i < len(nums); i++ {
		for j := i + 1; j < len(nums); j++ {
			if nums[i]+nums[j] == target {
				ans[0] = i
				ans[1] = j
			}
		}
	}
	return ans
}

// 使用哈希表
func twoSumHash(nums []int, target int) []int {
	hashMap := make(map[int]int, len(nums))
	for i, v := range nums {
		if x, ok := hashMap[target-v]; ok {
			return []int{i, x}
		}
		hashMap[v] = i
	}
	return nil
}
